package 第三周;

/*
 * @author  YxinMiracle
 * @date  2022-04-26 16:57
 * @Gitee: https://gitee.com/yxinmiracle
 */

import java.util.ArrayList;
import java.util.List;

public class 子集 {

    public List<List<Integer>> subsets(int[] nums) {
        List<List<Integer>> result = new ArrayList<>();
        recur(nums, 0, result, new ArrayList<>());
        System.out.println(result);
        return result;
    }

    // 递归函数
    public void recur(int[] nums, int i, List<List<Integer>> result, List<Integer> temp) {
        if (i == nums.length) {
            // 到达边界
            ArrayList<Integer> newList = new ArrayList<>(temp);
            result.add(newList);
            return;
        }


        temp.add(nums[i]);
        recur(nums, i + 1, result, temp); // 选
        temp.remove(temp.size()-1);
        recur(nums, i + 1, result, temp); // 不选
    }

    public static void main(String[] args) {
        new 子集().subsets(new int[]{1,2,3});
    }

}
